
/*
 * utils.h
 *
 *  Created on: 28/06/2011
 *      Author: fviale
 */

#ifndef UTILS_H_
#define UTILS_H_

	#include <stddef.h>
	#include <stdint.h>
	#include <string.h>
	#include <fcntl.h>
	#include <sys/mman.h>
	#include <unistd.h>

	#define HANDSHAKE_FAIL 	68
	#define HANDSHAKE_OK	67

	/******************/
	/*	Bit Operation */
	/******************/

	//! Byte swap unsigned short
	uint16_t swap_uint16(uint16_t val);

	//! Byte swap signed short
	int16_t swap_int16(int16_t val);

	//! Byte swap unsigned int
	uint32_t swap_uint32(uint32_t val);

	//! Byte swap int
	int32_t swap_int32(int32_t val);


	/***********************************************************/
	/*	Unicode Conversion  include -licui18n -licuuc -licudata*/
	/***********************************************************/

	uint16_t *unicode_utf8_to_utf16(const char *src_utf8, const size_t src_utf8size, size_t *dest_utf16size);

	int unicode_utf8_to_utf16_inbuffer(const char *src_utf8, const size_t src_utf8size, uint16_t *dest_utf16, size_t *dest_utf16size);

	char *unicode_utf16_to_utf8(const uint16_t *src_utf16, const size_t src_utf16size, size_t *dest_utf8size);

	int unicode_utf16_to_utf8_inbuffer(const uint16_t *src_utf16, const size_t src_utf16size, char* dest_utf8, size_t *dest_utf8size);

	char** string_split2( char *str, char delimitor );

	void string_split3( char *str, char delimitor, char **result );



/*
 * Utils.h
 *
 *  Created on: 27/09/2011
 *      Author: Pablo Arias & Juan Pablo De Blas
 */


// potencia2: hace una potencia con base 2 elevado a la n.
unsigned int potencia2(char n);

// byteToBin: Pasa un byte a binario.
char *byteToBin(char n);

// binToByte: pasa un byte en binario a decimal, espera como argumento el numero y su longitud EN BITS!
unsigned int binToByte(char *n,char len);

//Pasa un conjunto de bytes a decimal usando Big Endian.. espera el conjunto y su longitud EN BYTES!!!
unsigned int toBigEndian(char *bytes, char len);

//Pasa un conjunto de bytes a decimal usando Little Endian.. espera el conjunto y su longitud EN BYTES!!!
unsigned int toLilEndian(char bytes[], char len);

unsigned int concat_uint(char numers[],unsigned int length);

int connect_Raid_PPD();

#endif /* UTILS_H_ */
